package com.raojunxue.company.dao;

import java.io.Serializable;
import java.util.List;

import com.raojunxue.company.util.PageIndex;

public interface AbstractDao<T extends Serializable, ID extends Serializable> {

	void save(T t);
	
	void update(T t);
	
	void delete(T t);
	
	T findById(ID id);
	
	List<T> list();
	
	List<T> list(PageIndex pageIndex);
	
	List<T> list(PageIndex pageIndex, int count);
	
	List<T> listOrderByProperty(PageIndex pageIndex, String PropertyName);

	List<T> listOrderByProperty(int number, String propertyName, Object value, String orderProperty, boolean desc);
	
	List<T> listOrderByProperty(PageIndex pageIndex, String propertyName, Object value, String orderProperty);
	
	List<T> listOrderByProperty(PageIndex pageIndex, String propertyName, boolean asc);
	
	List<T> findByProperty(String propertyName, Object value);
	
	List<T> listByProperty(PageIndex pageIndex, String propertyName,
			Object value);
	
	List<T> listByProperty(PageIndex pageIndex, String propertyName,
			Object value, int count);
}
